static void get_full_path_by_dentry(struct dentry * p_input, struct file_search_key* file_name_cache){
    // 初始化 filepath_cache
    int write_where = 0;

    file_name_cache->raw_str[0] = '\0';
    for(int i = 0;i<MAX_FOLDER_DEPTH;i++){
        filepath_cache.update(&write_where, file_name_cache);
        write_where += 1;
    }

    write_where = 0;
    struct dentry* now_dentry = p_input;
    struct qstr d_name;
    const unsigned char *name = 0;

    for(int i = 0;i<MAX_FOLDER_DEPTH;i++){
        bpf_probe_read_kernel(&d_name, sizeof(d_name), (void *)&(now_dentry->d_name));
        name = d_name.name;
        if(!name)
            break;
        __builtin_memset(&file_name_cache->raw_str,0, FILE_NAME_MAX);
        bpf_probe_read_kernel_str(&file_name_cache->raw_str, FILE_NAME_MAX, name);
        filepath_cache.update(&write_where, file_name_cache);
        if (file_name_cache->raw_str[0] == '/')
            break;
        write_where += 1;


        bpf_probe_read_kernel(&now_dentry, sizeof(now_dentry), (void *)&(now_dentry->d_parent));
    }
    struct file_search_key* p_file_name_cache;
    p_file_name_cache = filepath_cache.lookup(&write_where);

    // 拼接文件路径
//    int sub_str_need_in = 0;
//    file_name_cache->raw_str[0] = '/';
//    int p_output = 0;
//    int read_which_sub_str = write_where;
//    char now_chr;
//
//    for(int ii = 0;ii<100;ii++){
//        if(!p_file_name_cache)
//            break;
//        bpf_probe_read_kernel(&now_chr, sizeof(now_chr), &p_file_name_cache->raw_str[sub_str_need_in]);
//        if(now_chr == '\0' || p_output == 0){
//            now_chr = '/';
//            sub_str_need_in = -1;
//            read_which_sub_str -= 1;
//            p_file_name_cache = filepath_cache.lookup(&read_which_sub_str);
//        }
//        file_name_cache->raw_str[p_output] = now_chr;
//        p_output += 1;
//        sub_str_need_in += 1;
//    }
//    bpf_trace_printk("file_path:%s",file_name_cache->raw_str);
}


struct class_new_event_event{
    u64 db_update_event_id;
    int located_directory_id;
    char file_name[FILE_NAME_MAX];
    int Creator_class_id;
    int new_class_id;
};
BPF_RINGBUF_OUTPUT(class_new_event_sender, 1 << 12);

BPF_PERCPU_ARRAY(class_new_event_event_cache, struct class_new_event_event, 1);